
#include <iostream>
#include <math.h>
#include <set>

using namespace std;

set<int> conj;
set<int> conj2;
set<int>::iterator it;
int limite = 100;

bool rotacionesPrimas(int);
bool primo(int);
bool noTiene(int);
int cantCifras(int);

int main()
{
	cout<< "QE";
	conj.insert(2);
	conj.insert(3);
	for(int i = 5;i<limite;i = i+2){
		cout << i << " ";
		if(primo(i)) {
			if(noTiene(i)) {
					conj.insert(i);
	cout << ";";
	}
		}
		}
	cout << ";";
	for(it = conj.begin();it != conj.end();it++)
	{
		if (rotacionesPrimas(*it)) conj2.insert(*it);
	}
	cout << conj2.size()<<endl;
	return 0;
}


bool primo(int i){
	for(it = conj.begin();it!=conj.end();it++){
			if(i % *it == 0) {
				return false;
	}
	}
	return true;
}

bool noTiene(int n){
	
	while(n > 0){
		if (n % 2 == 0 || n%5 == 0 || n % 10 == 0) return false;
		n = n/10;
	}
	return true;
}

bool rotacionesPrimas(int n){
	int n2 = n;
	do{
	n2  = (n%10)*cantCifras(n) + n/10;
	if (conj.count(n2) == 0 ) return false;	
	}while(n2 != n);
	return true;
}

int cantCifras(int n){
	int i = 0;
	while(n >0){
		i++;
		n = n/10;
	}
	
}

